1. The Field of the Invention
The present invention relates to systems and methods for directing requests to specific processing. More particularly, the present invention relates to systems and methods for directing Hyper Text Transport Protocol (HTTP) requests to specific processing using mapping techniques.
2. The Prior State of the Art
The rapid and effective exchange of information can generate many positive societal results such as improved education, an efficient economy and stronger personal relationships. In the modem era often termed the xe2x80x9cinformation age,xe2x80x9d computer networks such as the Internet play an important role in facilitating such information exchange. For example, e-mail allows people to communicate quickly over large distances and at minimal cost. Furthermore, the Internet and World-Wide Web allow users to manipulate browser software to obtain information in the form of World-Wide Web pages that may reside on one of millions of remote servers. Currently, there are so many World-Wide Web pages, that computer users can access information concerning practically any subject matter they desire. Computer networks also allow people to share resources such as memory or processing power.
Many conventional computer networks exchange information using a request-response protocol. Specifically, a client computer obtains information by generating a request and transmitting that request over a computer network to a server computer. The server computer interprets and generates a response to the request which ideally includes the information requested by the client computer. HyperText Transport Protocol or HTTP is one example of a request-response protocol that is used over computer networks.
In larger networks such as the Internet, a server computer can potentially receive many requests from many different client computers. Thus, it is important that the server computer respond efficiently to each request. Furthermore, to preserve the integrity and utility of the network, the server computer should respond appropriately to the request by considering the information desired and the security permissions of those generating the request. In some cases this may involve responding within the desired information. In other cases, this may involve responding with an error message if the user does not have security permission to obtain the desired information.
A server computer, or a cluster of server computers, may have available several specialized software modules that can efficiently handle requests for information of certain types or perform other processing such as executing code. For example, a special xe2x80x9cactive serverxe2x80x9d module may be capable of responding to a request identifying an active server page. An active server page is a Web page that contains executable code that is typically executed in response to a request for the active server page. An active server page is identified by an xe2x80x9caspxe2x80x9d extension. Typically, the results of the execution rather than the executable code itself are then included in the response to the client.
The server computer must thus make a determination as to whether the module can handle the request identifying a file, page, or other resource. In the case of the xe2x80x9cactive serverxe2x80x9d module, the server would ensure that the request truly identifies an active server page by, for example, confirming that the request identified a file with an xe2x80x9caspxe2x80x9d extension.
The server computer must also confirm that the module can perform the command or xe2x80x9cverbxe2x80x9d designated in the request on the file. For example, an active server module typically does not handle the HTTP methods xe2x80x9cPUTxe2x80x9d or xe2x80x9cDELETExe2x80x9d, but can handle other HTTP methods such as xe2x80x9cGETxe2x80x9d, xe2x80x9cPOSTxe2x80x9d and xe2x80x9cHEADxe2x80x9d. Thus, it is important that the server computer not pass control for processing the request to the active server module when the request designates methods that the active server module does not handle or is not capable of executing. For example, the server computer should not pass control for processing the request to an active server module if the request includes the methods xe2x80x9cPUTxe2x80x9d or xe2x80x9cDELETExe2x80x9d.
The server computer performs this method check by using a mapping technique referred to as an exclusion list, which includes a list of all the methods that the module does not handle. In the active server module example, the exclusion list would include an entry for the active server module with corresponding methods xe2x80x9cPUTxe2x80x9d and xe2x80x9cDELETExe2x80x9d indicating that the active server module does not handle the xe2x80x9cPUTxe2x80x9d and xe2x80x9cDELETExe2x80x9d methods. On the other hand, since the methods xe2x80x9cGETxe2x80x9d, xe2x80x9cPOSTxe2x80x9d and xe2x80x9cHEADxe2x80x9d are not included on the exclusion list, control is properly passed to the active server module when the request includes those methods. The methods within the exclusion list may have been derived based on information provided by the module to the server computer as the module registers with the exclusion list during installation of the module or power up of the server computer.
The problem with the exclusion list stems from the fact that many transport protocols are extensible protocols in that additional methods can be introduced into the protocol. For example, HTTP is an extensible protocol for which further extensions have been developed. WEB Distributed Authoring and Versioning or WEBDAV is one such extension that introduces new methods that permit collaborative and distributed authoring over the Internet. Some of these new WEBDAV methods include, for example, xe2x80x9cPROPFINDxe2x80x9d, xe2x80x9cPROPPATCHxe2x80x9d, xe2x80x9cMKCOLxe2x80x9d, xe2x80x9cCOPYxe2x80x9d, xe2x80x9cMOVExe2x80x9d, xe2x80x9cLOCKxe2x80x9d and xe2x80x9cUNLOCK.xe2x80x9d
However, assume that these new methods are not known to the module developers at the time the module is distributed. This might likely occur if the new methods were introduced into a protocol after the module was distributed. In this case, the module does not register with the server computer that the module cannot handle these new methods and thus the new methods will not be included within the exclusion list. After all, the developers might have a very difficult time predicting what potential new methods could appear within a request for future extensions to the protocol. Thus, the developers cannot have the module register with the exclusion list such new methods with the exclusion list as being methods that the module cannot handle.
If the server computer receives a request designating a new method, the server computer would check the exclusion list to discover that the new method is not listed as one of the methods that the module cannot handle. Thus, control would be passed to the module to process the request. The module most likely will not be able to perform the new method since the assumption is that the module was distributed before the new method was known to the developers of the module.
Thus, the module could return an unpredictable and inappropriate response to the request thereby introducing inefficiency into the server computer""s ability to properly process a request. Therefore, methods and systems are desired for conditionally passing control for processing a request to a module. Control should not be passed to the module if the module cannot handle a method included in the request even if the method was not known to the module developers.
In many networks, including Intranets and the Internet, the exchange of information between clients and servers is often initiated by a request from a client. The request typically identifies a resource and a particular method that is to be performed at the server with regard to the identified resource. For instance, the method may be a GET method, which causes the server to retrieve the identified resource for the client. The resource is typically identified by a name and an extension.
At the server, the extension is usually associated with specific processing in the form of a process, program or other module, that will be executed in response to the request. This is performed by transferring or directing control of the request to the specific processing. The act of providing control to another process is complicated by the fact that some of the processes, programs or modules that will execute the method identified in the request are not able to perform or execute all of the potential methods that may be included in requests.
To overcome this problem, the present invention provides an inclusion list that is associated with the resource and the associated process that includes a list of the methods that the process is capable of executing. The server receiving the request examines the inclusion list and if the method identified in the request is present or included in the inclusion list, then processing of the request is directed to the corresponding process. If the method is not listed in the inclusion list, then the corresponding process is not given control of the request and the client is appropriately notified.
The present invention provides for a known response in the event that the method included in the request is not listed in the inclusion list. Further, an inclusion list is easily updated and will continue to operate effectively as new and currently unknown methods are developed. In the special case where the inclusion list is empty, the server always transfers control of the request to the process because an empty inclusion list is interpreted as being able to handle all methods.
Additional objects and advantages of the invention will be set forth in the description which follows, and in part will be obvious from the description, or may be learned by the practice of the invention. The objects and advantages of the invention may be realized and obtained by means of the instruments and combinations particularly pointed out in the appended claims. These and other objects and features of the present invention will become more fully apparent from the following description and appended claims, or may be learned by the practice of the invention as set forth hereinafter.